table of contents
SERVICES(5) | Podręcznik programisty Linuksa | SERVICES(5) |
NAZWA¶
services - lista usług sieci Internet
OPIS¶
services jest plikiem tekstowym umożliwiającym wzajemne przyporządkowanie pomiędzy przyjaznymi nazwami usług a odpowiednimi numerami portów i rodzajami protokołów. Każda aplikacja sieciowa powinna konsultowac z tym plikiem numer portu (i protokołu) dla określonej usługi. Funkcje biblioteki C getservent(3), getservbyname(3), getservbyport(3), setservent(3) i endservent(3) obsługują zapytania dotyczące zawartości tego pliku od programów.
Numery portów są przydzielane przez IANA (Internet Assigned Numbers Authority), ich aktualna polityka to przydzielanie numeru portu jednocześnie dla obu protokołów: TCP i UDP. Dlatego większość usług w pliku services posiada podwójne rekordy, nawet w przypadku usług działających tylko po TCP.
Numery portów poniżej 1024 (tzw. niskie porty, porty o niskich numerach) mogą być otwierane jedynie przez administratora (patrz bind(2), tcp(7) i udp(7)). Oznacza to, że klient łączący się z niskim numerem portu może mieć pewność, że program obsługi na tym porcie jest standardowym programem systemowym, a nie dowolnym programem użytkownika danego komputera. Popularne numery portów określone przez IANA są zwykle umieszczane w tym właśnie przedziale portów administratora.
Obecność pozycji dotyczącej usługi w pliku services nie oznacza, że dana usługa jest aktualnie obsługiwana przez maszynę. Konfigurację obsługiwanych usług internetowych można znaleźć w pliku inetd.conf(5). Należy również pamiętać, że nie wszystkie usługi sieciowe są uruchamiane przez inetd(8), a zatem plik inetd.conf(5) nie zawiera wszystkich usług świadczonych przez dany komputer. W szczególności serwery news (NNTP) i poczty (SMTP) są zwykle uruchamiane z systemowych skryptów startowych.
Położenie pliku services jest zdefiniowane jako _PATH_SERVICES w pliku /usr/include/netdb.h. Zwykle jest to /etc/services.
Każdy wiersz tego pliku opisuje jedną usługę i ma następującą postać:
- nazwa-usługi port/protokół [aliasy ...]
- gdzie:
- nazwa-usługi
- jest to przyjazna dla człowieka nazwa, pod którą usługa jest znana i pod którą jest poszukiwana. Rozróżnia się małe i wielkie litery. Często program kliencki jest nazywany tak jak nazwa-usługi.
- port
- numer portu (liczba dziesiętna), z którego ma dana usługa korzystać.
- protokół
- rodzaj protokołu, jaki ma być wykorzystywany. To pole powinno zawierać jeden z protokołów zdefiniowanych w pliku protocols(5). Zwykle jest to tcp lub udp.
- aliasy
- jest to opcjonalna lista rozdzielonych spacjami lub znakami tabulacji innych nazw tej samej usługi (ale zajrzyj też do sekcji BŁĘDY, poniżej). Tu też rozróżnia się małe i wielkie litery.
Poszczególne pola mogą być rozdzielane spacjami lub znakami tabulacji.
Komentarze rozpoczynają się od znaku krzyżyka # aż do końca wiersza. Puste wiersze są pomijane.
nazwa-usługi powinna się rozpoczynać w pierwszej kolumnie pliku, ponieważ początkowe spacje nie są pomijane. nazwa-usługi może się składać z dowolnych widocznych znaków, z wyjątkiem spacji i znaku tabulacji. Jednakże w celu zmniejszenia kłopotów z przenośnością powinny być użyta znaki z bardziej ograniczonych zakresów. Np. a-z, 0-9 i myślnik (-) wydaje się być rozsądnym wyborem.
Wiersze nie odpowiadające temu formatowi nie powinny znajdować się w pliku. (Obecnie są one pomijane przez funkcje getservent(3), getservbyname(3) i getservbyport(3). Jednakże nie należy polegać na tym zachowaniu.)
Jako cecha zgodności z poprzednimi wersjami, ukośnik (/) pomiędzy numerem portu a nazwą protokołu może być w rzeczywistości również przecinkiem (,). Jednak stosowanie przecinka w nowych instalacjach nie jest zalecane.
Plik ten może być rozpowszechniany w sieci za pośrednictwem takich ogólnosieciowych usług nazewnictwa, jak Yellow Pages/NIS lub BIND/Hesiod.
Przykładowy plik services mógłby wyglądać tak:
netstat 15/tcp qotd 17/tcp quote msp 18/tcp # message send protocol msp 18/udp # message send protocol chargen 19/tcp ttytst source chargen 19/udp ttytst source ftp 21/tcp # 22 - unassigned telnet 23/tcp
BŁĘDY¶
Ze względu na sposób, w jaki jest napisana funkcja getservent(3) istnieje ograniczenie liczby aliasów do 35.
Wiersze dłuższe niż BUFSIZ (obecnie 1024) będą ignorowane przez funkcje getservent(3), getservbyname(3) i getservbyport(3). Spowoduje to również błędne zinterpretowanie następnego wiersza.
PLIKI¶
- /etc/services
- lista usług sieci Internet
- /usr/include/netdb.h
- definicja stałej _PATH_SERVICES
ZOBACZ TAKŻE¶
listen(2), endservent(3), getservbyname(3), getservbyport(3), getservent(3), setservent(3), inetd.conf(5), protocols(5), inetd(8).
Przydzielone numery można znaleźć w RFC 1700 (inaczej, STD0002)
Przewodnik po usłudze Yellow Pages
Przewodnik po usłudze BIND/Hesiod
1996-01-11 | Linux |